<?php /** 删除对应题目 api **/
require_once '../../config/req.conf.php';
require_once '../../utils/CommonMethods.php';
require_once '../../utils/VerifyFormData.php';
require_once '../../utils/DBUtils.php';

/* 1. token认证和角色权限校验 */
$headers = apache_request_headers(); // 请求头信息获取
$info = VerifyFormData::verifyRole($headers['Authorization'], "root");
if( CommonMethods::isEmpty($info) ){
    RespJson::fail("没有访问权限");
    return;
}

/* 2. 对数据进行校验 */
if( CommonMethods::isEmpty($_POST) || CommonMethods::isEmpty($_POST['id']) ){
    RespJson::fail("id 不能为空");
    return;
}

/* 3. 通过数据库查询是否存在该题目信息 */
DBUtils::init();
$has = DBUtils::queryOne(DBUtils::getSql("php_questions")->where("id = {$_POST['id']}")->select());
if( CommonMethods::isEmpty($has) ){
    RespJson::fail("不存在该题目");
    return;
}

/* 4. 安全检查: 如果有试卷引用了该题目, 那么就不能删除 */
$has = DBUtils::queryOne(
    DBUtils::getSql("php_paper_questions")
        ->where("qId = {$_POST['id']}")
        ->select()
);
if( !CommonMethods::isEmpty($has) ){
    RespJson::fail("该题目已经发布在试卷中, 不可直接删除");
    return;
}

/* 5. 删除指定的题目信息 */
$success = DBUtils::execute(DBUtils::getSql("php_questions")->where("id = {$_POST['id']}")->delete());
if( $success ){
    RespJson::success();
    return;
}else{
    RespJson::fail();
    return;
}